﻿/**
 * jQuery EasyUI 1.3
 * 
 * Licensed under the GPL terms
 * To use it on other terms please contact us
 *
 * Copyright(c) 2009-2012 stworthy [ stworthy@gmail.com ] 
 * 
 */
(function ($) {
    function _1(_2) {
        var _3 = $(_2).children("div.tabs-header");
        var _4 = 0;
        $("ul.tabs li", _3).each(function () {
            _4 += $(this).outerWidth(true);
        });
        var _5 = _3.children("div.tabs-wrap").width();
        var _6 = parseInt(_3.find("ul.tabs").css("padding-left"));
        return _4 - _5 + _6;
    };
    function _7(_8) {
        var _9 = $.data(_8, "tabs").options;
        var _a = $(_8).children("div.tabs-header");
        var _b = _a.children("div.tabs-tool");
        var _c = _a.children("div.tabs-scroller-left");
        var _d = _a.children("div.tabs-scroller-right");
        var _e = _a.children("div.tabs-wrap");
        _b._outerHeight(_a.outerHeight() - (_9.plain ? 2 : 0));
        var _f = 0;
        $("ul.tabs li", _a).each(function () {
            _f += $(this).outerWidth(true);
        });
        var _10 = _a.width() - _b.outerWidth();
        if (_f > _10) {
            _c.show();
            _d.show();
            _b.css("right", _d.outerWidth());
            _e.css({ marginLeft: _c.outerWidth(), marginRight: _d.outerWidth() + _b.outerWidth(), left: 0, width: _10 - _c.outerWidth() - _d.outerWidth() });
        } else {
            _c.hide();
            _d.hide();
            _b.css("right", 0);
            _e.css({ marginLeft: 0, marginRight: _b.outerWidth(), left: 0, width: _10 });
            _e.scrollLeft(0);
        }
    };
    function _11(_12) {
        var _13 = $.data(_12, "tabs").options;
        var _14 = $(_12).children("div.tabs-header");
        if (_13.tools) {
            if (typeof _13.tools == "string") {
                $(_13.tools).addClass("tabs-tool").appendTo(_14);
                $(_13.tools).show();
            } else {
                _14.children("div.tabs-tool").remove();
                var _15 = $("<div class=\"tabs-tool\"></div>").appendTo(_14);
                for (var i = 0; i < _13.tools.length; i++) {
                    var _16 = $("<a href=\"javascript:void(0);\"></a>").appendTo(_15);
                    _16[0].onclick = eval(_13.tools[i].handler || function () {
                    });
                    _16.linkbutton($.extend({}, _13.tools[i], { plain: true }));
                }
            }
        } else {
            _14.children("div.tabs-tool").remove();
        }
    };
    function _17(_18) {
        var _19 = $.data(_18, "tabs").options;
        var cc = $(_18);
        if (_19.fit == true) {
            var p = cc.parent();
            p.addClass("panel-noscroll");
            if (p[0].tagName == "BODY") {
                $("html").addClass("panel-fit");
            }
            _19.width = p.width();
            _19.height = p.height();
        }
        cc.width(_19.width).height(_19.height);
        var _1a = $(_18).children("div.tabs-header");
        _1a._outerWidth(_19.width);
        _7(_18);
        var _1b = $(_18).children("div.tabs-panels");
        var _1c = _19.height;
        if (!isNaN(_1c)) {
            _1b._outerHeight(_1c - _1a.outerHeight());
        } else {
            _1b.height("auto");
        }
        var _1d = _19.width;
        if (!isNaN(_1d)) {
            _1b._outerWidth(_1d);
        } else {
            _1b.width("auto");
        }
    };
    function _1e(_1f) {
        var _20 = $.data(_1f, "tabs").options;
        var tab = _21(_1f);
        if (tab) {
            var _22 = $(_1f).children("div.tabs-panels");
            var _23 = _20.width == "auto" ? "auto" : _22.width();
            var _24 = _20.height == "auto" ? "auto" : _22.height();
            tab.panel("resize", { width: _23, height: _24 });
        }
    };
    function _25(_26) {
        var _27 = $.data(_26, "tabs").tabs;
        var cc = $(_26);
        cc.addClass("tabs-container");
        cc.wrapInner("<div class=\"tabs-panels\"/>");
        $("<div class=\"tabs-header\">" + "<div class=\"tabs-scroller-left\"></div>" + "<div class=\"tabs-scroller-right\"></div>" + "<div class=\"tabs-wrap\">" + "<ul class=\"tabs\"></ul>" + "</div>" + "</div>").prependTo(_26);
        cc.children("div.tabs-panels").children("div").each(function (i) {
            var _28 = $.extend({}, $.parser.parseOptions(this), { selected: ($(this).attr("selected") ? true : undefined) });
            var pp = $(this);
            _27.push(pp);
            _32(_26, pp, _28);
        });
        cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function () {
            $(this).addClass("tabs-scroller-over");
        }, function () {
            $(this).removeClass("tabs-scroller-over");
        });
        cc.bind("_resize", function (e, _29) {
            var _2a = $.data(_26, "tabs").options;
            if (_2a.fit == true || _29) {
                _17(_26);
                _1e(_26);
            }
            return false;
        });
    };
    function _2b(_2c) {
        var _2d = $.data(_2c, "tabs").options;
        var _2e = $(_2c).children("div.tabs-header");
        var _2f = $(_2c).children("div.tabs-panels");
        if (_2d.plain == true) {
            _2e.addClass("tabs-header-plain");
        } else {
            _2e.removeClass("tabs-header-plain");
        }
        if (_2d.border == true) {
            _2e.removeClass("tabs-header-noborder");
            _2f.removeClass("tabs-panels-noborder");
        } else {
            _2e.addClass("tabs-header-noborder");
            _2f.addClass("tabs-panels-noborder");
        }
        $(".tabs-scroller-left", _2e).unbind(".tabs").bind("click.tabs", function () {
            var _30 = $(".tabs-wrap", _2e);
            var pos = _30.scrollLeft() - _2d.scrollIncrement;
            _30.animate({ scrollLeft: pos }, _2d.scrollDuration);
        });
        $(".tabs-scroller-right", _2e).unbind(".tabs").bind("click.tabs", function () {
            var _31 = $(".tabs-wrap", _2e);
            var pos = Math.min(_31.scrollLeft() + _2d.scrollIncrement, _1(_2c));
            _31.animate({ scrollLeft: pos }, _2d.scrollDuration);
        });
    };
    function _32(_33, pp, _34) {
        var _35 = $.data(_33, "tabs");
        _34 = _34 || {};
        pp.panel($.extend({}, _34, { border: false, noheader: true, closed: true, doSize: false, iconCls: (_34.icon ? _34.icon : undefined), onLoad: function () {
            if (_34.onLoad) {
                _34.onLoad.call(this, arguments);
            }
            _35.options.onLoad.call(_33, $(this));
        }
        }));
        var _36 = pp.panel("options");
        var _37 = $(_33).children("div.tabs-header").find("ul.tabs");
        function _38(li) {
            return _37.find("li").index(li);
        };
        _36.tab = $("<li></li>").appendTo(_37);
        _36.tab.unbind(".tabs").bind("click.tabs", function () {
            if ($(this).hasClass("tabs-disabled")) {
                return;
            }
            _44(_33, _38(this));
        }).bind("contextmenu.tabs", function (e) {
            if ($(this).hasClass("tabs-disabled")) {
                return;
            }
            _35.options.onContextMenu.call(_33, e, $(this).find("span.tabs-title").html(), _38(this));
        });
        var _39 = $("<a href=\"javascript:void(0)\" class=\"tabs-inner\"></a>").appendTo(_36.tab);
        var _3a = $("<span class=\"tabs-title\"></span>").html(_36.title).appendTo(_39);
        var _3b = $("<span class=\"tabs-icon\"></span>").appendTo(_39);
        if (_36.closable) {
            _3a.addClass("tabs-closable");
            var _3c = $("<a href=\"javascript:void(0)\" class=\"tabs-close\"></a>").appendTo(_36.tab);
            _3c.unbind(".tabs").bind("click.tabs", function () {
                if ($(this).parent().hasClass("tabs-disabled")) {
                    return;
                }
                _3d(_33, _38($(this).parent()));
                return false;
            });
        }
        if (_36.iconCls) {
            _3a.addClass("tabs-with-icon");
            _3b.addClass(_36.iconCls);
        }
        if (_36.tools) {
            var _3e = $("<span class=\"tabs-p-tool\"></span>").insertAfter(_39);
            if (typeof _36.tools == "string") {
                $(_36.tools).children().appendTo(_3e);
            } else {
                for (var i = 0; i < _36.tools.length; i++) {
                    var t = $("<a href=\"javascript:void(0)\"></a>").appendTo(_3e);
                    t.addClass(_36.tools[i].iconCls);
                    if (_36.tools[i].handler) {
                        t.bind("click", eval(_36.tools[i].handler));
                    }
                }
            }
            var pr = _3e.children().length * 12;
            if (_36.closable) {
                pr += 8;
            } else {
                pr -= 3;
                _3e.css("right", "5px");
            }
            _3a.css("padding-right", pr + "px");
        }
    };
    function _3f(_40, _41) {
        var _42 = $.data(_40, "tabs").options;
        var _43 = $.data(_40, "tabs").tabs;
        if (_41.selected == undefined) {
            _41.selected = true;
        }
        var pp = $("<div></div>").appendTo($(_40).children("div.tabs-panels"));
        _43.push(pp);
        _32(_40, pp, _41);
        _42.onAdd.call(_40, _41.title, _43.length - 1);
        _7(_40);
        if (_41.selected) {
            _44(_40, _43.length - 1);
        }
    };
    function _45(_46, _47) {
        var _48 = $.data(_46, "tabs").selectHis;
        var pp = _47.tab;
        var _49 = pp.panel("options").title;
        pp.panel($.extend({}, _47.options, { iconCls: (_47.options.icon ? _47.options.icon : undefined) }));
        var _4a = pp.panel("options");
        var tab = _4a.tab;
        tab.find("span.tabs-icon").attr("class", "tabs-icon");
        tab.find("a.tabs-close").remove();
        tab.find("span.tabs-title").html(_4a.title);
        if (_4a.closable) {
            tab.find("span.tabs-title").addClass("tabs-closable");
            $("<a href=\"javascript:void(0)\" class=\"tabs-close\"></a>").appendTo(tab);
        } else {
            tab.find("span.tabs-title").removeClass("tabs-closable");
        }
        if (_4a.iconCls) {
            tab.find("span.tabs-title").addClass("tabs-with-icon");
            tab.find("span.tabs-icon").addClass(_4a.iconCls);
        } else {
            tab.find("span.tabs-title").removeClass("tabs-with-icon");
        }
        if (_49 != _4a.title) {
            for (var i = 0; i < _48.length; i++) {
                if (_48[i] == _49) {
                    _48[i] = _4a.title;
                }
            }
        }
        _2b(_46);
        $.data(_46, "tabs").options.onUpdate.call(_46, _4a.title, _4b(_46, pp));
    };
    function _3d(_4c, _4d) {
        var _4e = $.data(_4c, "tabs").options;
        var _4f = $.data(_4c, "tabs").tabs;
        var _50 = $.data(_4c, "tabs").selectHis;
        if (!_51(_4c, _4d)) {
            return;
        }
        var tab = _52(_4c, _4d);
        var _53 = tab.panel("options").title;
        var _54 = _4b(_4c, tab);
        if (_4e.onBeforeClose.call(_4c, _53, _54) == false) {
            return;
        }
        var tab = _52(_4c, _4d, true);
        tab.panel("options").tab.remove();
        tab.panel("destroy");
        _4e.onClose.call(_4c, _53, _54);
        _7(_4c);
        for (var i = 0; i < _50.length; i++) {
            if (_50[i] == _53) {
                _50.splice(i, 1);
                i--;
            }
        }
        var _55 = _50.pop();
        if (_55) {
            _44(_4c, _55);
        } else {
            if (_4f.length) {
                _44(_4c, 0);
            }
        }
    };
    function _52(_56, _57, _58) {
        var _59 = $.data(_56, "tabs").tabs;
        if (typeof _57 == "number") {
            if (_57 < 0 || _57 >= _59.length) {
                return null;
            } else {
                var tab = _59[_57];
                if (_58) {
                    _59.splice(_57, 1);
                }
                return tab;
            }
        }
        for (var i = 0; i < _59.length; i++) {
            var tab = _59[i];
            if (tab.panel("options").title == _57) {
                if (_58) {
                    _59.splice(i, 1);
                }
                return tab;
            }
        }
        return null;
    };
    function _4b(_5a, tab) {
        var _5b = $.data(_5a, "tabs").tabs;
        for (var i = 0; i < _5b.length; i++) {
            if (_5b[i][0] == $(tab)[0]) {
                return i;
            }
        }
        return -1;
    };
    function _21(_5c) {
        var _5d = $.data(_5c, "tabs").tabs;
        for (var i = 0; i < _5d.length; i++) {
            var tab = _5d[i];
            if (tab.panel("options").closed == false) {
                return tab;
            }
        }
        return null;
    };
    function _5e(_5f) {
        var _60 = $.data(_5f, "tabs").tabs;
        for (var i = 0; i < _60.length; i++) {
            if (_60[i].panel("options").selected) {
                _44(_5f, i);
                return;
            }
        }
        if (_60.length) {
            _44(_5f, 0);
        }
    };
    function _44(_61, _62) {
        var _63 = $.data(_61, "tabs").options;
        var _64 = $.data(_61, "tabs").tabs;
        var _65 = $.data(_61, "tabs").selectHis;
        if (_64.length == 0) {
            return;
        }
        var _66 = _52(_61, _62);
        if (!_66) {
            return;
        }
        var _67 = _21(_61);
        if (_67) {
            _67.panel("close");
            _67.panel("options").tab.removeClass("tabs-selected");
        }
        _66.panel("open");
        var _68 = _66.panel("options").title;
        _65.push(_68);
        var tab = _66.panel("options").tab;
        tab.addClass("tabs-selected");
        var _69 = $(_61).find(">div.tabs-header div.tabs-wrap");
        var _6a = tab.position().left + _69.scrollLeft();
        var _6b = _6a - _69.scrollLeft();
        var _6c = _6b + tab.outerWidth();
        if (_6b < 0 || _6c > _69.innerWidth()) {
            var pos = Math.min(_6a - (_69.width() - tab.width()) / 2, _1(_61));
            _69.animate({ scrollLeft: pos }, _63.scrollDuration);
        } else {
            var pos = Math.min(_69.scrollLeft(), _1(_61));
            _69.animate({ scrollLeft: pos }, _63.scrollDuration);
        }
        _1e(_61);
        _63.onSelect.call(_61, _68, _4b(_61, _66));
    };
    function _51(_6d, _6e) {
        return _52(_6d, _6e) != null;
    };
    $.fn.tabs = function (_6f, _70) {
        if (typeof _6f == "string") {
            return $.fn.tabs.methods[_6f](this, _70);
        }
        _6f = _6f || {};
        return this.each(function () {
            var _71 = $.data(this, "tabs");
            var _72;
            if (_71) {
                _72 = $.extend(_71.options, _6f);
                _71.options = _72;
            } else {
                $.data(this, "tabs", { options: $.extend({}, $.fn.tabs.defaults, $.fn.tabs.parseOptions(this), _6f), tabs: [], selectHis: [] });
                _25(this);
            }
            _11(this);
            _2b(this);
            _17(this);
            _5e(this);
        });
    };
    $.fn.tabs.methods = { options: function (jq) {
        return $.data(jq[0], "tabs").options;
    }, tabs: function (jq) {
        return $.data(jq[0], "tabs").tabs;
    }, resize: function (jq) {
        return jq.each(function () {
            _17(this);
            _1e(this);
        });
    }, add: function (jq, _73) {
        return jq.each(function () {
            _3f(this, _73);
        });
    }, close: function (jq, _74) {
        return jq.each(function () {
            _3d(this, _74);
        });
    }, getTab: function (jq, _75) {
        return _52(jq[0], _75);
    }, getTabIndex: function (jq, tab) {
        return _4b(jq[0], tab);
    }, getSelected: function (jq) {
        return _21(jq[0]);
    }, select: function (jq, _76) {
        return jq.each(function () {
            _44(this, _76);
        });
    }, exists: function (jq, _77) {
        return _51(jq[0], _77);
    }, update: function (jq, _78) {
        return jq.each(function () {
            _45(this, _78);
        });
    }, enableTab: function (jq, _79) {
        return jq.each(function () {
            $(this).tabs("getTab", _79).panel("options").tab.removeClass("tabs-disabled");
        });
    }, disableTab: function (jq, _7a) {
        return jq.each(function () {
            $(this).tabs("getTab", _7a).panel("options").tab.addClass("tabs-disabled");
        });
    }
    };
    $.fn.tabs.parseOptions = function (_7b) {
        return $.extend({}, $.parser.parseOptions(_7b, ["width", "height", "tools", { fit: "boolean", border: "boolean", plain: "boolean"}]));
    };
    $.fn.tabs.defaults = { width: "auto", height: "auto", plain: false, fit: false, border: true, tools: null, scrollIncrement: 100, scrollDuration: 400, onLoad: function (_7c) {
    }, onSelect: function (_7d, _7e) {
    }, onBeforeClose: function (_7f, _80) {
    }, onClose: function (_81, _82) {
    }, onAdd: function (_83, _84) {
    }, onUpdate: function (_85, _86) {
    }, onContextMenu: function (e, _87, _88) {
    }
    };
})(jQuery);

